package logica.pessoa;

import logica.util.Data;
import logica.util.Endereco;


/**
 * Classe Usuario
 * Os usuario sao formado por todos os adminitradores do sistema
 * 
 * @author Jose Arthur Morais (Tabira)
 * @since 15/10/2010
 *
 */
public class Usuario extends PessoaFisica{
	
	private String login;
	private String senha;
	private String matricula;
	
	/**
	 * Controi um objeto usuario do sistema
	 * 
	 * @param String nome
	 * @param String telefone
	 * @param String email
	 * @param Endereco endereco
	 * @param String cpf
	 * @param String rg
	 * @param Data  dataDeNascimento
	 * @param String naturalidade
	 * @param String login
	 * @param String senha
	 * @param String matricula
	 * 
	 * @throws Exception Ver excessao das super classes
	 * @throws Exception login deve ter mais de 5 caracteres
	 * @throws Exception senha deve ter mais de 5 caracteres
	 * @throws Exception matricula tem que conter exclusivamente 7 digitos
	 * 
	 * @see {@link Pessoa} {@link PessoaFisica} {@link Gerente} {@link Funcionario}  {@link PessoaJuridica}
	 */
	public Usuario(String nome, String telefone, String email, Endereco endereco, String cpf,String rg, Data dataDeNascimento, String naturalidade,String login,String senha,String matricula) throws Exception{
		
		super ( nome, telefone, email, endereco, cpf, rg,  dataDeNascimento,  naturalidade);
		
		setLogin(login);
		setSenha(senha);
		setMatricula(matricula);
	
	}
	
	/**
	 * Consulta login do usuario
	 * @return String login
	 */
	public String getLogin() {
		return login;
	}
	
	/**
	 * Muda o login 
	 * @param String login
	 * @throws Exception login deve ter mais de 5 caracteres
	 * @throws Exception login deve ser individual
	 */
	public void setLogin(String login) throws Exception {
		if (login == null || login.length() < 6 )
			throw new Exception ("login deve ter mais de 5 caracteres");
		
		
		this.login = login;
	}
	
	/**
	 * Consulta senha
	 * @return String senha
	 */
	public String getSenha() {
		return senha;
	}
	
	/**
	 * Muda a senha
	 * @param String senha
	 * @throws Exception senha deve ter mais de 5 caracteres
	 */
	public void setSenha(String senha) throws Exception {
		if (senha == null || senha.length() < 6)
			throw new Exception ("senha deve ter mais de 5 caracteres");
		
		this.senha = senha;
	}
	
	/**
	 * consulta matricula
	 * @return String matricula
	 */
	public String getMatricula() {
		return matricula;
	}
	
	/**
	 * Muda matricula
	 * @param String metricula
	 * @throws Exception matricula tem que conter exclusivamente 7 digitos
	 */
	public void setMatricula(String matricula) throws Exception {
		if (matricula == null || ! stringSoTemDigito(matricula) || matricula.length() != 7)
			throw new Exception ("matricula invalida");
		
	
		this.matricula = matricula;
	}

	/**
	 * Verifica a igualdade entre usuarios 
	 * 
	 * @return boolean true se os Usuarios possuem mesma matricula
	 */
	@Override public boolean equals(Object object){
		if (! (object instanceof Usuario))
			return false;
		
		return matricula.equals(((Usuario)object).getMatricula());
	}
	
	/**
	 * Representa o usuario em forma de string
	 * 
	 * @return String usuario
	 */
	@Override public String toString(){
		return "Matricula: " + matricula + "\nLogin: " + login; 
	}


}
